<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/thread_info.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/thread_info.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="k">/* thread_info.h: common low-level thread information accessors</span>
<a name="2" /><span class="True">       2:</span> <span class="k"> *</span>
<a name="3" /><span class="True">       3:</span> <span class="k"> * Copyright (C) 2002  David Howells (dhowells@redhat.com)</span>
<a name="4" /><span class="True">       4:</span> <span class="k"> * - Incorporating suggestions made by Linus Torvalds</span>
<a name="5" /><span class="True">       5:</span> <span class="k"> */</span>
<a name="6" /><span class="True">       6:</span> 
<a name="7" /><span class="Maybe">       7:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X0xJTlVYX1RIUkVBRF9JTkZPX0hfMA__"><span class="b">_LINUX_THREAD_INFO_H</span></a>
<a name="8" /><span class="Maybe">       8:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X0xJTlVYX1RIUkVBRF9JTkZPX0hfMA__"><span class="b">_LINUX_THREAD_INFO_H</span></a>
<a name="9" /><span class="Maybe">       9:</span> 
<a name="10" /><span class="Maybe">      10:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">types</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="11" /><span class="Maybe">      11:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">bug</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="12" /><span class="Maybe">      12:</span> 
<a name="13" /><span class="Maybe">      13:</span> <span class="m">struct</span> <span class="b">timespec</span><span class="f">;</span>
<a name="14" /><span class="Maybe">      14:</span> <span class="m">struct</span> <span class="b">compat_timespec</span><span class="f">;</span>
<a name="15" /><span class="Maybe">      15:</span> 
<a name="16" /><span class="Maybe">      16:</span> <span class="k">/*</span>
<a name="17" /><span class="Maybe">      17:</span> <span class="k"> * System call restart block.</span>
<a name="18" /><span class="Maybe">      18:</span> <span class="k"> */</span>
<a name="19" /><span class="Maybe">      19:</span> <span class="m">struct</span> <span class="b">restart_block</span> <span class="f">{</span>
<a name="20" /><span class="Maybe">      20:</span>     <span class="m">long</span> <span class="f">(</span><span class="f">*</span><span class="b">fn</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">restart_block</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="21" /><span class="Maybe">      21:</span>     <span class="m">union</span> <span class="f">{</span>
<a name="22" /><span class="Maybe">      22:</span>         <span class="k">/* For futex_wait and futex_wait_requeue_pi */</span>
<a name="23" /><span class="Maybe">      23:</span>         <span class="m">struct</span> <span class="f">{</span>
<a name="24" /><span class="Maybe">      24:</span>             <a href="cpu.c_macros_ref.html#_dTMyXzA_"><span class="b">u32</span></a> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">uaddr</span><span class="f">;</span>
<a name="25" /><span class="Maybe">      25:</span>             <a href="cpu.c_macros_ref.html#_dTMyXzA_"><span class="b">u32</span></a> <span class="b">val</span><span class="f">;</span>
<a name="26" /><span class="Maybe">      26:</span>             <a href="cpu.c_macros_ref.html#_dTMyXzA_"><span class="b">u32</span></a> <span class="b">flags</span><span class="f">;</span>
<a name="27" /><span class="Maybe">      27:</span>             <a href="cpu.c_macros_ref.html#_dTMyXzA_"><span class="b">u32</span></a> <span class="b">bitset</span><span class="f">;</span>
<a name="28" /><span class="Maybe">      28:</span>             <span class="b">u64</span> <span class="b">time</span><span class="f">;</span>
<a name="29" /><span class="Maybe">      29:</span>             <a href="cpu.c_macros_ref.html#_dTMyXzA_"><span class="b">u32</span></a> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">uaddr2</span><span class="f">;</span>
<a name="30" /><span class="Maybe">      30:</span>         <span class="f">}</span> <span class="b">futex</span><span class="f">;</span>
<a name="31" /><span class="Maybe">      31:</span>         <span class="k">/* For nanosleep */</span>
<a name="32" /><span class="Maybe">      32:</span>         <span class="m">struct</span> <span class="f">{</span>
<a name="33" /><span class="Maybe">      33:</span>             <span class="b">clockid_t</span> <span class="b">clockid</span><span class="f">;</span>
<a name="34" /><span class="Maybe">      34:</span>             <span class="m">struct</span> <span class="b">timespec</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">rmtp</span><span class="f">;</span>
<a name="35" /><span class="Maybe">      35:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX0NPTVBBVF8w"><span class="b">CONFIG_COMPAT</span></a>
<a name="36" /><span class="Maybe">      36:</span>             <span class="m">struct</span> <span class="b">compat_timespec</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">compat_rmtp</span><span class="f">;</span>
<a name="37" /><span class="Maybe">      37:</span> <span class="f">#</span><span class="n">endif</span>
<a name="38" /><span class="Maybe">      38:</span>             <span class="b">u64</span> <span class="b">expires</span><span class="f">;</span>
<a name="39" /><span class="Maybe">      39:</span>         <span class="f">}</span> <span class="b">nanosleep</span><span class="f">;</span>
<a name="40" /><span class="Maybe">      40:</span>         <span class="k">/* For poll */</span>
<a name="41" /><span class="Maybe">      41:</span>         <span class="m">struct</span> <span class="f">{</span>
<a name="42" /><span class="Maybe">      42:</span>             <span class="m">struct</span> <span class="b">pollfd</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">ufds</span><span class="f">;</span>
<a name="43" /><span class="Maybe">      43:</span>             <span class="m">int</span> <span class="b">nfds</span><span class="f">;</span>
<a name="44" /><span class="Maybe">      44:</span>             <span class="m">int</span> <span class="b">has_timeout</span><span class="f">;</span>
<a name="45" /><span class="Maybe">      45:</span>             <span class="m">unsigned</span> <span class="m">long</span> <span class="b">tv_sec</span><span class="f">;</span>
<a name="46" /><span class="Maybe">      46:</span>             <span class="m">unsigned</span> <span class="m">long</span> <span class="b">tv_nsec</span><span class="f">;</span>
<a name="47" /><span class="Maybe">      47:</span>         <span class="f">}</span> <span class="b">poll</span><span class="f">;</span>
<a name="48" /><span class="Maybe">      48:</span>     <span class="f">}</span><span class="f">;</span>
<a name="49" /><span class="Maybe">      49:</span> <span class="f">}</span><span class="f">;</span>
<a name="50" /><span class="Maybe">      50:</span> 
<a name="51" /><span class="Maybe">      51:</span> <span class="m">extern</span> <span class="m">long</span> <span class="b">do_no_restart_syscall</span><span class="f">(</span><span class="m">struct</span> <span class="b">restart_block</span> <span class="f">*</span><span class="b">parm</span><span class="f">)</span><span class="f">;</span>
<a name="52" /><span class="Maybe">      52:</span> 
<a name="53" /><span class="Maybe">      53:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">bitops</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="54" /><span class="Maybe">      54:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="m">asm</span><span class="f">/</span><span class="b">thread_info</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="55" /><span class="Maybe">      55:</span> 
<a name="56" /><span class="Maybe">      56:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_X19LRVJORUxfX18w"><span class="b">__KERNEL__</span></a>
<a name="57" /><span class="Maybe">      57:</span> 
<a name="58" /><span class="False">      58:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_DEBUG_STACK_USAGE</span>
<a name="59" /><span class="False">      59:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_VEhSRUFESU5GT19HRlBfMA__"><span class="b">THREADINFO_GFP</span></a>        <span class="f">(</span><a href="cpu.c_macros_ref.html#_R0ZQX0tFUk5FTF8w"><span class="b">GFP_KERNEL</span></a> <span class="f">|</span> <a href="cpu.c_macros_noref.html#_X19HRlBfTk9UUkFDS18w"><span class="b">__GFP_NOTRACK</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19HRlBfWkVST18w"><span class="b">__GFP_ZERO</span></a><span class="f">)</span>
<a name="60" /><span class="Maybe">      60:</span> <span class="f">#</span><span class="n">else</span>
<a name="61" /><span class="Maybe">      61:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_VEhSRUFESU5GT19HRlBfMA__"><span class="b">THREADINFO_GFP</span></a>        <span class="f">(</span><a href="cpu.c_macros_ref.html#_R0ZQX0tFUk5FTF8w"><span class="b">GFP_KERNEL</span></a> <span class="f">|</span> <a href="cpu.c_macros_noref.html#_X19HRlBfTk9UUkFDS18w"><span class="b">__GFP_NOTRACK</span></a><span class="f">)</span>
<a name="62" /><span class="Maybe">      62:</span> <span class="f">#</span><span class="n">endif</span>
<a name="63" /><span class="Maybe">      63:</span> 
<a name="64" /><span class="Maybe">      64:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VEhSRUFESU5GT19HRlBfQUNDT1VOVEVEXzA_"><span class="b">THREADINFO_GFP_ACCOUNTED</span></a> <span class="f">(</span><a href="cpu.c_macros_noref.html#_VEhSRUFESU5GT19HRlBfMA__"><span class="b">THREADINFO_GFP</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19HRlBfS01FTUNHXzA_"><span class="b">__GFP_KMEMCG</span></a><span class="f">)</span>
<a name="65" /><span class="Maybe">      65:</span> 
<a name="66" /><span class="Maybe">      66:</span> <span class="k">/*</span>
<a name="67" /><span class="Maybe">      67:</span> <span class="k"> * flag set/clear/test wrappers</span>
<a name="68" /><span class="Maybe">      68:</span> <span class="k"> * - pass TIF_xxxx constants to these functions</span>
<a name="69" /><span class="Maybe">      69:</span> <span class="k"> */</span>
<a name="70" /><span class="Maybe">      70:</span> 
<a name="71" /><span class="Maybe">      71:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">set_ti_thread_flag</span><span class="f">(</span><span class="m">struct</span> <span class="b">thread_info</span> <span class="f">*</span><span class="b">ti</span><span class="f">,</span> <span class="m">int</span> <span class="b">flag</span><span class="f">)</span>
<a name="72" /><span class="Maybe">      72:</span> <span class="f">{</span>
<a name="73" /><span class="Maybe">      73:</span>     <span class="b">set_bit</span><span class="f">(</span><span class="b">flag</span><span class="f">,</span> <span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="f">)</span><span class="f">&amp;</span><span class="b">ti</span><span class="f">-&gt;</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>
<a name="74" /><span class="Maybe">      74:</span> <span class="f">}</span>
<a name="75" /><span class="Maybe">      75:</span> 
<a name="76" /><span class="Maybe">      76:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">clear_ti_thread_flag</span><span class="f">(</span><span class="m">struct</span> <span class="b">thread_info</span> <span class="f">*</span><span class="b">ti</span><span class="f">,</span> <span class="m">int</span> <span class="b">flag</span><span class="f">)</span>
<a name="77" /><span class="Maybe">      77:</span> <span class="f">{</span>
<a name="78" /><span class="Maybe">      78:</span>     <span class="b">clear_bit</span><span class="f">(</span><span class="b">flag</span><span class="f">,</span> <span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="f">)</span><span class="f">&amp;</span><span class="b">ti</span><span class="f">-&gt;</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>
<a name="79" /><span class="Maybe">      79:</span> <span class="f">}</span>
<a name="80" /><span class="Maybe">      80:</span> 
<a name="81" /><span class="Maybe">      81:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">test_and_set_ti_thread_flag</span><span class="f">(</span><span class="m">struct</span> <span class="b">thread_info</span> <span class="f">*</span><span class="b">ti</span><span class="f">,</span> <span class="m">int</span> <span class="b">flag</span><span class="f">)</span>
<a name="82" /><span class="Maybe">      82:</span> <span class="f">{</span>
<a name="83" /><span class="Maybe">      83:</span>     <span class="m">return</span> <span class="b">test_and_set_bit</span><span class="f">(</span><span class="b">flag</span><span class="f">,</span> <span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="f">)</span><span class="f">&amp;</span><span class="b">ti</span><span class="f">-&gt;</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>
<a name="84" /><span class="Maybe">      84:</span> <span class="f">}</span>
<a name="85" /><span class="Maybe">      85:</span> 
<a name="86" /><span class="Maybe">      86:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">test_and_clear_ti_thread_flag</span><span class="f">(</span><span class="m">struct</span> <span class="b">thread_info</span> <span class="f">*</span><span class="b">ti</span><span class="f">,</span> <span class="m">int</span> <span class="b">flag</span><span class="f">)</span>
<a name="87" /><span class="Maybe">      87:</span> <span class="f">{</span>
<a name="88" /><span class="Maybe">      88:</span>     <span class="m">return</span> <span class="b">test_and_clear_bit</span><span class="f">(</span><span class="b">flag</span><span class="f">,</span> <span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="f">)</span><span class="f">&amp;</span><span class="b">ti</span><span class="f">-&gt;</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>
<a name="89" /><span class="Maybe">      89:</span> <span class="f">}</span>
<a name="90" /><span class="Maybe">      90:</span> 
<a name="91" /><span class="Maybe">      91:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">test_ti_thread_flag</span><span class="f">(</span><span class="m">struct</span> <span class="b">thread_info</span> <span class="f">*</span><span class="b">ti</span><span class="f">,</span> <span class="m">int</span> <span class="b">flag</span><span class="f">)</span>
<a name="92" /><span class="Maybe">      92:</span> <span class="f">{</span>
<a name="93" /><span class="Maybe">      93:</span>     <span class="m">return</span> <a href="cpu.c_macros_ref.html#_dGVzdF9iaXRfMA__"><span class="b">test_bit</span></a><span class="f">(</span><span class="b">flag</span><span class="f">,</span> <span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="f">*</span><span class="f">)</span><span class="f">&amp;</span><span class="b">ti</span><span class="f">-&gt;</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>
<a name="94" /><span class="Maybe">      94:</span> <span class="f">}</span>
<a name="95" /><span class="Maybe">      95:</span> 
<a name="96" /><span class="Maybe">      96:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_c2V0X3RocmVhZF9mbGFnXzA_"><span class="b">set_thread_flag</span></a><span class="f">(</span><span class="b">flag</span><span class="f">)</span> \
<a name="97" /><span class="Maybe">      97:</span>     <span class="b">set_ti_thread_flag</span><span class="f">(</span><span class="b">current_thread_info</span><span class="f">(</span><span class="f">)</span><span class="f">,</span> <span class="b">flag</span><span class="f">)</span>
<a name="98" /><span class="Maybe">      98:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Y2xlYXJfdGhyZWFkX2ZsYWdfMA__"><span class="b">clear_thread_flag</span></a><span class="f">(</span><span class="b">flag</span><span class="f">)</span> \
<a name="99" /><span class="Maybe">      99:</span>     <span class="b">clear_ti_thread_flag</span><span class="f">(</span><span class="b">current_thread_info</span><span class="f">(</span><span class="f">)</span><span class="f">,</span> <span class="b">flag</span><span class="f">)</span>
<a name="100" /><span class="Maybe">     100:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_dGVzdF9hbmRfc2V0X3RocmVhZF9mbGFnXzA_"><span class="b">test_and_set_thread_flag</span></a><span class="f">(</span><span class="b">flag</span><span class="f">)</span> \
<a name="101" /><span class="Maybe">     101:</span>     <span class="b">test_and_set_ti_thread_flag</span><span class="f">(</span><span class="b">current_thread_info</span><span class="f">(</span><span class="f">)</span><span class="f">,</span> <span class="b">flag</span><span class="f">)</span>
<a name="102" /><span class="Maybe">     102:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_dGVzdF9hbmRfY2xlYXJfdGhyZWFkX2ZsYWdfMA__"><span class="b">test_and_clear_thread_flag</span></a><span class="f">(</span><span class="b">flag</span><span class="f">)</span> \
<a name="103" /><span class="Maybe">     103:</span>     <span class="b">test_and_clear_ti_thread_flag</span><span class="f">(</span><span class="b">current_thread_info</span><span class="f">(</span><span class="f">)</span><span class="f">,</span> <span class="b">flag</span><span class="f">)</span>
<a name="104" /><span class="Maybe">     104:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGVzdF90aHJlYWRfZmxhZ18w"><span class="b">test_thread_flag</span></a><span class="f">(</span><span class="b">flag</span><span class="f">)</span> \
<a name="105" /><span class="Maybe">     105:</span>     <span class="b">test_ti_thread_flag</span><span class="f">(</span><span class="b">current_thread_info</span><span class="f">(</span><span class="f">)</span><span class="f">,</span> <span class="b">flag</span><span class="f">)</span>
<a name="106" /><span class="Maybe">     106:</span> 
<a name="107" /><span class="Maybe">     107:</span> <span class="m">static</span> <span class="m">inline</span> <a href="cpu.c_macros_ref.html#_X19kZXByZWNhdGVkXzE_"><span class="b">__deprecated</span></a> <span class="m">void</span> <span class="b">set_need_resched</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="108" /><span class="Maybe">     108:</span> <span class="f">{</span>
<a name="109" /><span class="Maybe">     109:</span>     <span class="k">/*</span>
<a name="110" /><span class="Maybe">     110:</span> <span class="k">     * Use of this function in deprecated.</span>
<a name="111" /><span class="Maybe">     111:</span> <span class="k">     *</span>
<a name="112" /><span class="Maybe">     112:</span> <span class="k">     * As of this writing there are only a few users in the DRM tree left</span>
<a name="113" /><span class="Maybe">     113:</span> <span class="k">     * all of which are wrong and can be removed without causing too much</span>
<a name="114" /><span class="Maybe">     114:</span> <span class="k">     * grief.</span>
<a name="115" /><span class="Maybe">     115:</span> <span class="k">     *</span>
<a name="116" /><span class="Maybe">     116:</span> <span class="k">     * The DRM people are aware and are working on removing the last few</span>
<a name="117" /><span class="Maybe">     117:</span> <span class="k">     * instances.</span>
<a name="118" /><span class="Maybe">     118:</span> <span class="k">     */</span>
<a name="119" /><span class="Maybe">     119:</span> <span class="f">}</span>
<a name="120" /><span class="Maybe">     120:</span> 
<a name="121" /><span class="Maybe">     121:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_dGlmX25lZWRfcmVzY2hlZF8w"><span class="b">tif_need_resched</span></a><span class="f">(</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_dGVzdF90aHJlYWRfZmxhZ18w"><span class="b">test_thread_flag</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_VElGX05FRURfUkVTQ0hFRF8w"><span class="b">TIF_NEED_RESCHED</span></a><span class="f">)</span>
<a name="122" /><span class="Maybe">     122:</span> 
<a name="123" /><span class="False">     123:</span> <span class="f">#</span><span class="n">if</span> <span class="b">defined</span> <span class="b">TIF_RESTORE_SIGMASK</span> <span class="f">&amp;&amp;</span> <span class="f">!</span><span class="b">defined</span> <a href="cpu.c_macros_ref.html#_SEFWRV9TRVRfUkVTVE9SRV9TSUdNQVNLXzA_"><span class="b">HAVE_SET_RESTORE_SIGMASK</span></a>
<a name="124" /><span class="False">     124:</span> <span class="k">/*</span>
<a name="125" /><span class="False">     125:</span> <span class="k"> * An arch can define its own version of set_restore_sigmask() to get the</span>
<a name="126" /><span class="False">     126:</span> <span class="k"> * job done however works, with or without TIF_RESTORE_SIGMASK.</span>
<a name="127" /><span class="False">     127:</span> <span class="k"> */</span>
<a name="128" /><span class="False">     128:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_SEFWRV9TRVRfUkVTVE9SRV9TSUdNQVNLXzA_"><span class="b">HAVE_SET_RESTORE_SIGMASK</span></a>    <span class="c">1</span>
<a name="129" /><span class="False">     129:</span> 
<a name="130" /><span class="False">     130:</span> <span class="k">/**</span>
<a name="131" /><span class="False">     131:</span> <span class="k"> * set_restore_sigmask() - make sure saved_sigmask processing gets done</span>
<a name="132" /><span class="False">     132:</span> <span class="k"> *</span>
<a name="133" /><span class="False">     133:</span> <span class="k"> * This sets TIF_RESTORE_SIGMASK and ensures that the arch signal code</span>
<a name="134" /><span class="False">     134:</span> <span class="k"> * will run before returning to user mode, to process the flag.  For</span>
<a name="135" /><span class="False">     135:</span> <span class="k"> * all callers, TIF_SIGPENDING is already set or it&apos;s no harm to set</span>
<a name="136" /><span class="False">     136:</span> <span class="k"> * it.  TIF_RESTORE_SIGMASK need not be in the set of bits that the</span>
<a name="137" /><span class="False">     137:</span> <span class="k"> * arch code will notice on return to user mode, in case those bits</span>
<a name="138" /><span class="False">     138:</span> <span class="k"> * are scarce.  We set TIF_SIGPENDING here to ensure that the arch</span>
<a name="139" /><span class="False">     139:</span> <span class="k"> * signal code always gets run when TIF_RESTORE_SIGMASK is set.</span>
<a name="140" /><span class="False">     140:</span> <span class="k"> */</span>
<a name="141" /><span class="False">     141:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">set_restore_sigmask</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="142" /><span class="False">     142:</span> <span class="f">{</span>
<a name="143" /><span class="False">     143:</span>     <a href="cpu.c_macros_noref.html#_c2V0X3RocmVhZF9mbGFnXzA_"><span class="b">set_thread_flag</span></a><span class="f">(</span><span class="b">TIF_RESTORE_SIGMASK</span><span class="f">)</span><span class="f">;</span>
<a name="144" /><span class="False">     144:</span>     <a href="cpu.c_macros_ref.html#_V0FSTl9PTl8w"><span class="b">WARN_ON</span></a><span class="f">(</span><span class="f">!</span><a href="cpu.c_macros_ref.html#_dGVzdF90aHJlYWRfZmxhZ18w"><span class="b">test_thread_flag</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_VElGX1NJR1BFTkRJTkdfMA__"><span class="b">TIF_SIGPENDING</span></a><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="145" /><span class="False">     145:</span> <span class="f">}</span>
<a name="146" /><span class="False">     146:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">clear_restore_sigmask</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="147" /><span class="False">     147:</span> <span class="f">{</span>
<a name="148" /><span class="False">     148:</span>     <a href="cpu.c_macros_noref.html#_Y2xlYXJfdGhyZWFkX2ZsYWdfMA__"><span class="b">clear_thread_flag</span></a><span class="f">(</span><span class="b">TIF_RESTORE_SIGMASK</span><span class="f">)</span><span class="f">;</span>
<a name="149" /><span class="False">     149:</span> <span class="f">}</span>
<a name="150" /><span class="False">     150:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">test_restore_sigmask</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="151" /><span class="False">     151:</span> <span class="f">{</span>
<a name="152" /><span class="False">     152:</span>     <span class="m">return</span> <a href="cpu.c_macros_ref.html#_dGVzdF90aHJlYWRfZmxhZ18w"><span class="b">test_thread_flag</span></a><span class="f">(</span><span class="b">TIF_RESTORE_SIGMASK</span><span class="f">)</span><span class="f">;</span>
<a name="153" /><span class="False">     153:</span> <span class="f">}</span>
<a name="154" /><span class="False">     154:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">test_and_clear_restore_sigmask</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="155" /><span class="False">     155:</span> <span class="f">{</span>
<a name="156" /><span class="False">     156:</span>     <span class="m">return</span> <a href="cpu.c_macros_noref.html#_dGVzdF9hbmRfY2xlYXJfdGhyZWFkX2ZsYWdfMA__"><span class="b">test_and_clear_thread_flag</span></a><span class="f">(</span><span class="b">TIF_RESTORE_SIGMASK</span><span class="f">)</span><span class="f">;</span>
<a name="157" /><span class="False">     157:</span> <span class="f">}</span>
<a name="158" /><span class="Maybe">     158:</span> <span class="f">#</span><span class="n">endif</span>    <span class="k">/* TIF_RESTORE_SIGMASK &amp;&amp; !HAVE_SET_RESTORE_SIGMASK */</span>
<a name="159" /><span class="Maybe">     159:</span> 
<a name="160" /><span class="False">     160:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_SEFWRV9TRVRfUkVTVE9SRV9TSUdNQVNLXzA_"><span class="b">HAVE_SET_RESTORE_SIGMASK</span></a>
<a name="161" /><span class="False">     161:</span> <span class="f">#</span><span class="n">error</span> <span class="e">&quot;no set_restore_sigmask() provided and default one won&apos;t work&quot;</span>
<a name="162" /><span class="Maybe">     162:</span> <span class="f">#</span><span class="n">endif</span>
<a name="163" /><span class="Maybe">     163:</span> 
<a name="164" /><span class="Maybe">     164:</span> <span class="f">#</span><span class="n">endif</span>    <span class="k">/* __KERNEL__ */</span>
<a name="165" /><span class="Maybe">     165:</span> 
<a name="166" /><span class="True">     166:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* _LINUX_THREAD_INFO_H */</span>
<a name="167" /><span class="True">     167:</span> </pre>
  </body>
</html>
